//-----------------------------------------------------------------------------
//
// @file	Vector3T.h
// @brief	Vector3T functionality class (
// @author	Vinod Melapudi
// @date	13Aug2011
//
//-----------------------------------------------------------------------------


#ifndef _VECTOR3T_H
#define _VECTOR3T_H

// Convenience class pointing at 3 dimension location 
template<class T>
class Vector3T
{
public:

	Vector3T()	{}

	Vector3T( T _x, T _y, T	_z)	:	x(_x), y(_y), z(_z)		{}
	
	void Set( T _x, T _y, T	_z)		
	{
		x = _x;
		y = _y;
		z = _z;
	}

	void operator=( const Vector3T<T>& rhs )
	{
		Set( rhs.x, rhs.y, rhs.z );
	}
	
	bool operator==( const Vector3T<T>& rhs ) const
	{
		return x==rhs.x && y==rhs.y && z==rhs.z;
	}

	Vector3T operator+( const Vector3T<T>& rhs ) const
	{
		return Vector3T( x+rhs.x, y+rhs.y, z+rhs.z);
	}

	T	x,y,z;
};

typedef		Vector3T<short>			sLocation;
typedef		Vector3T<unsigned int>	uLocation;
typedef		Vector3T<int>			iLocation;
typedef		Vector3T<float>			fLocation;

typedef		Vector3T<unsigned int>	uDimension;

#endif